﻿// 这段 MFC 示例源代码演示如何使用 MFC Microsoft Office Fluent 用户界面
// (“Fluent UI”)。该示例仅供参考，
// 用以补充《Microsoft 基础类参考》和
// MFC C++ 库软件随附的相关电子文档。
// 复制、使用或分发 Fluent UI 的许可条款是单独提供的。
// 若要了解有关 Fluent UI 许可计划的详细信息，请访问
// https://go.microsoft.com/fwlink/?LinkId=238214.
//
// 版权所有(C) Microsoft Corporation
// 保留所有权利。

// DBBrowser.h: DBBrowser 应用程序的主头文件
//
#pragma once

#ifndef __AFXWIN_H__
	#error "include 'pch.h' before including this file for PCH"
#endif

#include "resource.h"       // 主符号
#include "MainFrm.h"
#include "DBBrowserDoc.h"
#include "DBBrowserView.h"

// CDBBrowserApp:
// 有关此类的实现，请参阅 DBBrowser.cpp
//

class CDBBrowserApp : public CWinAppEx
{
public:
	CDBBrowserApp() noexcept;

	void CloseDB();
	void CheckUpdate();
	std::wstring GetAppVersion();
	CString GenerateSQL(CString tbl);
	bool isPE64(std::wstring filename);
	void OpenDB(CString path, CString database);
	void SelectNode(CString Node, CString Root = _T(""));

// 重写
public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	virtual BOOL PreTranslateMessage(MSG* pMsg);

// 实现
	UINT  m_nAppLook;
	BOOL  m_bHiColorIcons;
	std::wstring m_exepath;
	CString m_dicttbl;
	void SegTest();
	void ImportCSVToDB(CString path, std::wstring name);
	void ImportCSVToDBFromMem(const char *buffer, SIZE_T dwsize);

	virtual void PreLoadState();
	virtual void LoadCustomState();
	virtual void SaveCustomState();

	afx_msg void OnRichEditOK();
	afx_msg void OnAppAbout();
	afx_msg void OnFileAttach();
	afx_msg void OnFileOpen();
	afx_msg void OnFileSaveToTxt();
	afx_msg void OnFileSaveIncToTxt();
	afx_msg void OnUpdateTrans(CCmdUI *pCmdUI);
	afx_msg void OnUpdateStatic1(CCmdUI *pCmdUI);
	afx_msg void OnUpdateAutoTrans(CCmdUI * pCmdUI);
	afx_msg void OnUpadteSearch(CCmdUI *pCmdUI);
	afx_msg void OnUpdateEditDel(CCmdUI * pCmdUI);
	afx_msg void OnUpdateEditCell(CCmdUI * pCmdUI);
	afx_msg void OnUpdateTbClear(CCmdUI *pCmdUI);
	afx_msg void OnAutoTrans();
	afx_msg void OnBegin();
	afx_msg void OnEndedit();
	afx_msg void OnRollback();
	afx_msg void OnEditDel();
	afx_msg void OnEditSqlrun();
	afx_msg void OnSearchedit();
	afx_msg void OnEditInsert();
	afx_msg void OnEditInsClip();
	afx_msg void ImportCSVToDB();
	afx_msg void ReFresh();
	afx_msg void ExportAllTableToFile();
	afx_msg void OnTbRename();
	afx_msg void OnEditCopy();
	DECLARE_MESSAGE_MAP()
};

extern CDBBrowserApp theApp;


UINT SqlRunByThread(LPVOID lp);


struct _THREADPTR
{
	CDBBrowserApp *pApp;
	CDBBrowserDoc *pDoc;
	CDBBrowserView *pView;
	CMainFrame *pFra;
	CClassView *pCV;
	LPVOID data;
	_THREADPTR(){
		pApp = (CDBBrowserApp*)AfxGetApp();
		pFra = (CMainFrame*)AfxGetMainWnd();
		pDoc = (CDBBrowserDoc*)pFra->GetActiveDocument();
		pView = (CDBBrowserView*)pFra->GetActiveView();
		pCV = (CClassView*)pFra->GetPane(ID_VIEW_CLASSVIEW);
	}
	~_THREADPTR(){}
};